package cn.xyy.web;

import com.alibaba.fastjson.JSON;

import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.stp.StpUtil;
import cn.xyy.common.domain.system.auth.UserInfo;

/**
 * 登录认证用户
 * 
 * @author xyy
 *
 */
public class AuthUserHolder {

	/**
	 * 拼接用户缓存key
	 * 
	 * @param tokenValue
	 * @return
	 */
	public static String splicingKeyUser(String tokenValue) {
		return StpUtil.getTokenName() + ":" + StpUtil.getLoginType() + ":user:" + tokenValue;
	}

	/**
	 * 将用户信息存入缓存中
	 * 
	 * @param userInfo
	 */
	public static void setUserInfo(UserInfo userInfo) {
		if (userInfo == null) {
			return;
		}
		userInfo.setToken(StpUtil.getTokenValue());
		SaManager.getSaTokenDao().set(splicingKeyUser(StpUtil.getTokenValue()), JSON.toJSONString(userInfo),
				SaManager.getConfig().getTimeout());
	}

	/**
	 * 获取当前账号的用户信息
	 * 
	 * @return
	 */
	public static UserInfo getUserInfo() {
		String str = SaManager.getSaTokenDao().get(splicingKeyUser(StpUtil.getTokenValue()));
		return JSON.parseObject(str, UserInfo.class);
	}

	/**
	 * 销毁当前账号的用户信息
	 */
	public static void destroyUser() {
		destroyUser(StpUtil.getTokenValue());
	}

	/**
	 * 根据token销毁用户信息
	 * 
	 * @param token
	 */
	public static void destroyUser(String tokenValue) {
		SaManager.getSaTokenDao().delete(splicingKeyUser(tokenValue));
	}
}
